home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ V5.02 / EDITSDI.PAK / FILEDLG.C < prev    next >
C/C++ Source or Header  |  1997-05-06  |  5KB  |  197 lines

  1. // THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF
  2. // ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
  3. // THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
  4. // PARTICULAR PURPOSE.
  5. //
  6. // Copyright (C) 1993-1995  Microsoft Corporation.  All Rights Reserved.
  7. //
  8. //  MODULE: filedlg.c
  9. //
  10. //  PURPOSE: Shows basic use of "Open" and "Save As" common dialogs.
  11. //
  12. //
  13. //  FUNCTIONS:
  14. //
  15. //
  16. //  COMMENTS:
  17. //
  18. //
  19. //
  20. //  SPECIAL INSTRUCTIONS: N/A
  21. //
  22.  
  23. #include <windows.h>            // required for all Windows applications
  24. #ifdef WIN16
  25. #include <commdlg.h>
  26. #include "win16ext.h"           // required only for win16 applications
  27. #endif
  28. #include "globals.h"            // prototypes specific to this application
  29. #include "resource.h"
  30.  
  31. static char szDirName[256] = {'\0'};    // directory string
  32. void SetDirectory(LPOPENFILENAME);
  33.  
  34. //
  35. //  FUNCTION: CmdFileOpen(HWND, WORD, WORD, HWND)
  36. //
  37. //  PURPOSE: Call the open common dialog and show its results.
  38. //
  39. //  PARAMETERS:
  40. //    hwnd     - The window handle.
  41. //    wCommand - IDM_OPEN (Unused)
  42. //    wNotify  - (Unused)
  43. //    hwndCtrl - NULL (Unused)
  44. //
  45. //  RETURN VALUE:
  46. //
  47. //  COMMENTS:
  48. //
  49. //
  50.  
  51. #pragma argsused
  52. LRESULT CmdFileOpen(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl) {
  53.     OPENFILENAME ofn = {0}; // common dialog box structure
  54.     char szFile[256];       // filename string
  55.     char szFileTitle[256];  // file-title string
  56.     char szFilter[256];     // filter string
  57.     char chReplace;         // strparator for szFilter
  58.     int i, cbString;        // integer count variables
  59.  
  60.     if (!QuerySaveFile(hwnd)) {
  61.         return(0);
  62.     }
  63.  
  64.     // Retrieve the current directory name and store it in szDirName.
  65.  
  66.     if (szDirName[0] == '\0') {
  67. #ifdef WIN16
  68.         GetWindowsDirectory(szDirName, sizeof(szDirName));
  69. #else
  70.         GetCurrentDirectory(sizeof(szDirName), szDirName);
  71. #endif
  72.     }
  73.  
  74.     // Place the terminating null character in the szFile.
  75.  
  76.     szFile[0] = '\0';
  77.  
  78.     // Load the filter string from the resource file.
  79.  
  80.     cbString = LoadString(hInst, IDS_FILTERSTRING, szFilter, sizeof(szFilter));
  81.  
  82.     // Add a terminating null character to the filter string.
  83.  
  84.     chReplace = szFilter[cbString - 1];
  85.     for (i = 0; szFilter[i] != '\0'; i++){
  86.         if (szFilter[i] == chReplace)
  87.             szFilter[i] = '\0';
  88.     }
  89.  
  90.     // Set the members of the OPENFILENAME structure.
  91.  
  92.     ofn.lStructSize = sizeof(OPENFILENAME);
  93.     ofn.hwndOwner = hwnd;
  94.     ofn.lpstrFilter = szFilter;
  95.     ofn.nFilterIndex = 1;
  96.     ofn.lpstrFile = szFile;
  97.     ofn.nMaxFile = sizeof(szFile);
  98.     ofn.lpstrFileTitle = szFileTitle;
  99.     ofn.nMaxFileTitle = sizeof(szFileTitle);
  100.     ofn.lpstrInitialDir = szDirName;
  101.     ofn.Flags = OFN_SHOWHELP | OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
  102.  
  103.     // Display the Open dialog box.
  104.  
  105.     if (GetOpenFileName(&ofn)) {
  106.         Open(ofn.lpstrFile,MAKEBOOL((ofn.Flags & OFN_READONLY)),hwnd);
  107.         SetDirectory(&ofn);
  108.     }
  109.     return 0;
  110. }
  111.  
  112.  
  113. //
  114. //  FUNCTION: CmdFileSaveAs(HWND, WORD, WORD, HWND)
  115. //
  116. //  PURPOSE: Call the SaveAs common dialog and show the results.
  117. //
  118. //  PARAMETERS:
  119. //    hwnd     - The window handle.
  120. //    wCommand - IDM_SAVEAS (Unused)
  121. //    wNotify  - (Unused)
  122. //    hwndCtrl - NULL (Unused)
  123. //
  124. //  RETURN VALUE:
  125. //
  126. //  COMMENTS:
  127. //
  128. //
  129.  
  130. #pragma argsused
  131. LRESULT CmdFileSaveAs(HWND hwnd, WORD wCommand, WORD wNotify, HWND hwndCtrl) {
  132.      OPENFILENAME ofn = {0}; // common dialog box structure
  133.      char szFile[256];       // filename string
  134.      char szFileTitle[256];  // file-title string
  135.      char szFilter[256];     // filter string
  136.      char chReplace;         // string separator for szFilter
  137.      int i, cbString;        // integer count variables
  138.  
  139.     // Retrieve the current directory name and store it in szDirName.
  140.  
  141.     if (szDirName[0] == '\0') {
  142. #ifdef WIN16
  143.         GetWindowsDirectory(szDirName, sizeof(szDirName));
  144. #else
  145.         GetCurrentDirectory(sizeof(szDirName), szDirName);
  146. #endif
  147.     }
  148.  
  149.     // Place the terminating null character in szFile.
  150.  
  151.     szFile[0] = '\0';
  152.  
  153.     // Load the filter string from the .RC file.
  154.  
  155.     cbString = LoadString(hInst, IDS_FILTERSTRING, szFilter, sizeof(szFilter));
  156.  
  157.     // Add a terminating null character to the filter string.
  158.  
  159.     chReplace = szFilter[cbString - 1];
  160.  
  161.     for (i = 0; szFilter[i] != '\0'; i++) {
  162.         if (szFilter[i] == chReplace)
  163.                 szFilter[i] = '\0';
  164.     }
  165.  
  166.     // Set the members of the OPENFILENAME structure.
  167.  
  168.     ofn.lStructSize = sizeof(OPENFILENAME);
  169.     ofn.hwndOwner = hwnd;
  170.     ofn.lpstrFilter = szFilter;
  171.     ofn.nFilterIndex = 1;
  172.     ofn.lpstrFile = szFile;
  173.     ofn.nMaxFile = sizeof(szFile);
  174.  
  175.     ofn.lpstrFileTitle = szFileTitle;
  176.      ofn.nMaxFileTitle = sizeof(szFileTitle);
  177.     ofn.lpstrInitialDir = szDirName;
  178.     ofn.Flags = OFN_SHOWHELP | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY;
  179.  
  180.     // Display the Save As dialog box.
  181.  
  182.     if (GetSaveFileName(&ofn))
  183.     {
  184.         SaveAs(ofn.lpstrFile,hwnd);
  185.         SetDirectory(&ofn);
  186.         return 1L;
  187.     }
  188.  
  189.      return 0;
  190. }
  191.  
  192.  
  193. void SetDirectory(LPOPENFILENAME lpofn) {
  194.     lpofn->lpstrFile[lpofn->nFileOffset] = '\0';
  195.     lstrcpy(szDirName,lpofn->lpstrFile);
  196. }
  197.